# 9 9 乘法表
print("\n".join(["\t".join(["{} * {} = {}".format(i, j, i * j) for j in range(1, i + 1)]) for i in range(1, 10)]))

# 选择结构与循环结构

# 选择结构
# 在Java中有：if else if else、switch
# 在Python只有 if elif else
# 在使用的时候需要注意条件的先后顺序


'''
if 表达式1 and/or 表达式2 :
    前面有四个空格
    if条件成立则执行
elif 表达式3 and/or 表达式4 :
    前面有四个空格
    elif条件成立则执行
可以有很多elif
else:
    前面有四个空格
    if、elif条件不成立则执行
'''
# 根据年龄判断是否成年 大于等于18 则打印成年
# 从控制台输入
# age = int(input("请输入一个年龄："))
age = 20
if age < 0:
    print("年龄不符合规范")
elif age >= 18:
    print("成年")
else:
    print("未成年")

# 循环结构
# for、while
# 如果做循环一般使用while
# for循环一般用于遍历数据容器
'''
while 表达式 :
    前面有四个空格
    表达式成立则会执行
'''
# 计算1~100和 5050
sum = 0
cnt = 1
while cnt <= 100:
    sum += cnt
    cnt += 1  # 在Python中没有++ --这样的方法
print(sum)

# 计算 10的阶乘
# 10!=10*9*8*7*......*1
res = 1
cnt = 10
while cnt >= 1:
    res *= cnt
    cnt -= 1
print(res)

# for循环一般用于遍历
# 遍历list
list1 = [1, 2, 3, 4, 5]
for i in list1:
    print(i)

# 遍历tuple
tuple1 = (1, 2, 3)
for i in tuple1:
    print(i)

# 遍历set
set1 = {1, 1, 1, 2, 2, 3}
# 会遍历去重后的结果
for i in set1:
    print(i)

# 遍历dict
dict1 = {"k1": "v1", "k2": "v2", "k3": "v3"}
# 直接遍历dict只能获取到key
for key in dict1:
    print(key)
# 想要在获取key的时候再获取value
for key in dict1:
    print(key, dict1.get(key, ""))

# 使用dict的方法items
for i in dict1.items():
    # 遍历items可以获得由key、value构成的二元组
    print(i, type(i))
# 因为items返回的是一个二元组，则可以在遍历的时候用两个变量接收
for key, value in dict1.items():
    print(key, value)

list2 = [(1, 2, 3), (3, 4, 5), (4, 5, 6)]
for i, j, k in list2:
    print(i, j, k)

# for通常也会结合range函数一起使用
# 用于生成序列
for i in range(11):
    print(i)
